﻿using System;

namespace DisplaySC
{
    internal class Manager
    {
        public int Register(string guid)
        {
            const string url = "http://passport.kkcai.net/api.aspx?cmd=r&guid={0}";

            string code = new WebUtils().DoGet(String.Format(url, guid));

            if (String.IsNullOrEmpty(code))
            {
                return 99;
            }

            if (code == "1")
            {
                string key = CryptHelper.EnCryptDES(HardwareHelper.GetKey());

                IniFileHelper.WriteValue("license", "key", key);

                IniFileHelper.WriteValue("license", "guid", guid);
            }

            return TypeConvert.ToInt32(code, 99);
        }

        public bool Valid()
        {
            string key = IniFileHelper.ReadValue("license", "key");

            if (String.IsNullOrEmpty(key))
                return false;

            //检查注册的时候绑定的机器
            if (CryptHelper.DeCryptDES(key) != HardwareHelper.GetKey())
                return false;

            //检查是否过期
            string guid = IniFileHelper.ReadValue("license", "guid");
            const string url = "http://passport.kkcai.net/api.aspx?cmd=v&guid={0}";

            string resp = new WebUtils().DoGet(String.Format(url, guid));

            if (String.IsNullOrEmpty(resp))
            {
                return false;
            }

            return Convert.ToBoolean(resp);
        }

        public static void WriteConfig(ConfigInfo cfg)
        {
            IniFileHelper.WriteValue("config", "Type",   cfg.Type);
            IniFileHelper.WriteValue("config", "Color",  cfg.Color);
            IniFileHelper.WriteValue("config", "Font",   cfg.Font);
            IniFileHelper.WriteValue("config", "Border", cfg.IsBorder);
            IniFileHelper.WriteValue("config", "Omit",   cfg.IsOmit);
            IniFileHelper.WriteValue("config", "Video",  cfg.Video);
            IniFileHelper.WriteValue("config", "RowLine",cfg.IsLine);
            
            IniFileHelper.WriteValue("config", "DS", cfg.IsDS);
            IniFileHelper.WriteValue("config", "DX", cfg.IsDX);
            IniFileHelper.WriteValue("config", "HZ", cfg.IsHZ);
            IniFileHelper.WriteValue("config", "Q1", cfg.IsQ1);
            IniFileHelper.WriteValue("config", "Q2", cfg.IsQ2);
            IniFileHelper.WriteValue("config", "Q3", cfg.IsQ3);

            IniFileHelper.WriteValue("config", "Group", cfg.IsGroup);
            IniFileHelper.WriteValue("config", "CarNum", cfg.IsCarNumber);
            IniFileHelper.WriteValue("config", "Server", cfg.Server);
        }

        public static ConfigInfo GetConfig()
        {
            return new ConfigInfo()
            {
                Type  = TypeConvert.ToInt32(IniFileHelper.ReadValue("config", "Type"), 1),
                Color = TypeConvert.ToInt32(IniFileHelper.ReadValue("config", "Color"), 0),
                Font  = TypeConvert.ToInt32(IniFileHelper.ReadValue("config", "Font"), 0),
                Video = TypeConvert.ToInt32(IniFileHelper.ReadValue("config", "Video"), 1),
                IsBorder = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "Border")),
                IsOmit   = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "Omit"), true),
                IsLine   = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "RowLine")),

                IsDS = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "DS")),
                IsDX = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "DX")),
                IsHZ = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "HZ")),
                IsQ1 = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "Q1"), true),
                IsQ2 = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "Q2")),
                IsQ3 = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "Q3"), true),

                IsGroup = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "Group")),
                IsCarNumber = TypeConvert.ToBoolean(IniFileHelper.ReadValue("config", "CarNum")),
                Server = TypeConvert.ToInt32(IniFileHelper.ReadValue("config", "Server"), 0)
            };
        }
    }
}
